package mint.modules.symbol;

import mint.modules.generator.ClassDeclarationNode;
import mint.modules.generator.ConstructorDeclarationNode;
import mint.modules.generator.FieldDeclarationNode;
import mint.modules.generator.FormalParameterNode;
import mint.modules.generator.MethodDeclarationNode;
import mint.modules.generator.VariableDeclarationNode;

public class SymbolFactory {
	public static Symbol createClassSymbol(ClassDeclarationNode classNode)
	{
		return new ClassSymbol(classNode);
	}
	
	public static Symbol createFieldSymbol(FieldDeclarationNode fieldNode)
	{
		return new FieldSymbol(fieldNode);
	}
	
	public static Symbol createMethodSymbol(MethodDeclarationNode methodNode)
	{
		return new MethodSymbol(methodNode);
	}
	
	public static Symbol createConstructorSymbol(ConstructorDeclarationNode ctorNode)
	{
		return new ConstructorSymbol(ctorNode);
	}
	
	public static Symbol createParameterSymbol(FormalParameterNode parameterNode, int number)
	{
		return new ParameterSymbol(parameterNode, number);
	}
	
	public static Symbol createVariableSymbol(VariableDeclarationNode variableNode, int number)
	{
		return new VariableSymbol(variableNode, number);
	}
}
